package com.basic.common.core.mapper;

import java.util.List;

/**
 * 基础Mapper接口，定义了对数据库基本操作的方法。
 * 提供了插入、更新、删除和查询等操作的通用方法。
 *
 * @param <T> 泛型参数，表示操作的对象类型。
 */
public interface BaseMapper<T> {

    /**
     * 插入一条记录到数据库。
     *
     * @param po 要插入的对象。
     * @return 插入操作影响的行数。
     */
    public int insert(T po);

    /**
     * 更新数据库中的一条记录。
     *
     * @param po 要更新的对象。
     * @return 更新操作影响的行数。
     */
    public int update(T po);

    /**
     * 根据ID删除数据库中的一条记录。
     *
     * @param id 要删除的记录的ID。
     * @return 删除操作影响的行数。
     */
    public int delete(Object id);

    /**
     * 根据多个ID删除数据库中的记录。
     *
     * @param ids 要删除的记录的ID数组。
     * @return 删除操作影响的行数。
     */
    public int deleteByIds(Object[] ids);

    /**
     * 根据ID查询数据库中的一条记录。
     *
     * @param id 要查询的记录的ID。
     * @return 查询结果，如果不存在则为null。
     */
    public T get(Object id);

    /**
     * 查询数据库中的记录列表。
     *
     * @param po 查询条件对象，可以为空，为空时查询所有记录。
     * @return 记录列表。
     */
    public List<T> getList(T po);

}
